﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Intelsi.Entity;

namespace Intelsi.DataAcces
{
    public class DetalleProveedorDAO: MasterDataAccess, IDetalleProveedorDAO
    {
        public List<DetalleProveedorDTO> GetFromDetalleProveedorByProveedorid(int idProveedor)
        {
            var query = from dprov in Context.BancoProvedors

                        where (dprov.IdProveedor.Equals(idProveedor))

                        join Banc in Context.Bancoes on dprov.IdBanco equals Banc.IdBanco
                        
                        select new DetalleProveedorDTO
                        {
                          
                            IdBanco = dprov.IdBanco,
                            Nombre = Banc.Nombre,
                            NumeroCuenta = dprov.NumeroCuenta,
                            TipodeCuenta = dprov.TipodeCuenta,
                            LineaCredito = dprov.LineaCredito,
                            IdProveedor = dprov.IdProveedor,
                            TipoPago = dprov.TipoPago,
                           
                        };

            return query.ToList();

       

        }

        public void RegistrarDetalle(List<DetalleProveedorDTO> detalle, int proveedorId)
        {
            foreach (var id in detalle)
            {
                id.IdProveedor = proveedorId;

                RegistrarDetalle(id);
            }

        }

        
        public void RegistrarDetalle(DetalleProveedorDTO detalle)
        {
            BancoProvedor detalleProv = new BancoProvedor();

           // detalleProv.IdBanco = detalle.IdBanco;
            detalleProv.IdProveedor = detalle.IdProveedor;

            var existe = (from dpro in Context.BancoProvedors
                          where dpro.IdProveedor == detalleProv.IdProveedor
                          where dpro.IdBanco == detalleProv.IdBanco
                          select dpro).SingleOrDefault();


            if (existe == null)
            {
                detalleProv.IdBanco = detalle.IdBanco;
               // detalleProv.IdProveedor = detalle.IdProveedor;
                detalleProv.NumeroCuenta = detalle.NumeroCuenta;

                var Text = detalle.TipodeCuenta;

                if (Text == "Contado")
                {
                    detalleProv.TipodeCuenta.Equals(1);
                }
                else if (Text == "credito")
                {
                    detalleProv.TipodeCuenta.Equals(0);
                }

                detalleProv.LineaCredito = detalle.LineaCredito;
                detalleProv.TipoPago = detalle.TipoPago;

                Context.BancoProvedors.Add(detalleProv);
                Context.SaveChanges();


            }

            else
            {
                existe.IdBanco = detalle.IdBanco;
                //existe.IdProveedor = detalle.IdProveedor;
                existe.NumeroCuenta = detalle.NumeroCuenta;
                existe.TipodeCuenta = detalle.TipodeCuenta;
                existe.LineaCredito = detalle.LineaCredito;
                existe.TipoPago = detalle.TipoPago;

                Context.Entry(existe).State = System.Data.EntityState.Modified;
                Context.SaveChanges();
            }


        }

        public void EliminarDetalle(int id)
        {
            throw new NotImplementedException();
        }
    }
}
